package com.huashi.dealer.modular.business.message.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huashi.dealer.commonEntity.Message;
import com.huashi.dealer.commonEntity.MessageCategory;
import com.huashi.dealer.modular.business.message.param.MessageResponseParam;
import com.huashi.dealer.modular.business.message.param.StoreMessageListParam;
import com.huashi.dealer.modular.business.message.vo.IndexPageVo;

import java.util.List;

/**
 * API消息服务接口
 *
 * @author 谭陈强
 * @since 2025-07-30
 */
public interface MessageService extends IService<Message> {

    /**
     * 获取消息首页
     *
     * @return 消息首页数据
     */
    List<MessageCategory> getMessageIndex(String type);

    /**
     * 获取消息列表
     *
     * @return 消息列表
     */
    Page<MessageResponseParam> getMessageList(Message  message, Page<Message> page);

    /**
     * 获取消息详情
     *
     * @param messageId 消息ID
     * @return 消息详情
     */
    MessageResponseParam getMessageDetail(Long messageId);

    /**
     * 编辑消息状态
     *
     * @param messageId 请求参数
     */
    void editMessageStatus(Long messageId);

    /**
     * 清理消息状态
     *
     */
    void cleanUpMessageStatus();
    /**
     * 计算用户消息状态
     *
     * @param userId 用户ID
     * @return 是否有未读消息
     */
    Integer calculateMessageStatus(Integer userId);

    void sendMessage(Message  message);

    IndexPageVo getPageIndex();

    Page<Message> getMessageList(StoreMessageListParam param, Page<Message> page);

    void saveOrEditMessage(Message param);

    void deleteMessage(Long messageId);
}